package com.home_school_platform.dao;

import com.home_school_platform.entity.pojo.Admin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @authoor Bilysen
 * @date 2021/3/11 - 9:48
 **/
@Mapper
@Repository
public interface AdminDao {

    /**
     * 增加管理员用户
     * @param admin  admin对象
     * @return  影响的行数来提示是否增加成功
     */
    Integer insertAdmin(Admin admin);

    /**
     * 根据管理员id删除管理员
     * @param id
     * @return  影响的行数来提示是否删除成功
     */
    Integer deleteAdmin(Integer id);

    /**
     *更新管理员信息
     * @param admin
     * @return  影响的行数来提示是否更新成功
     */
    Integer updateAdmin(Admin admin);

    /**
     * 根据管理员id来查询某个管理员
     * @param id
     * @return Admin 返回一个管理员对象
     */
    Admin getAdmin(Integer id);

    /**
     *
     * @param currentIndex 当前页面
     * @param pageSize 页面大小
     * @return 管理员列表
     */
//    List<Admin> listAdmin(Map map);
    List<Admin> listAdmin(@Param("currentIndex") Integer currentIndex,
                          @Param("pageSize") Integer pageSize);

    /**
     * 统计有多少个管理员
     * @return 总共行数
     */
    Integer countAdmin();

    /**
     * 根据管理员账户来模糊查询管理员
     * @param account 模糊查询的账户
     * @param currentIndex 当前页面
     * @param pageSize 页面大小
     * @return 符合条件的管理员
     */
    List<Admin> listAdminLikeAccount(@Param("account") String account,
                                     @Param("currentIndex") Integer currentIndex,
                                     @Param("pageSize") Integer pageSize);

    /**
     *统计根据管理员账户来模糊的数据总数
     * @param account 模糊查询的账户
     * @return 统计个数
     */
    Integer countAdminLikeAccount(@Param("account") String account);
}
